const fs = require('fs');
const path = require('path');
const express = require('express');
const multer = require('multer');

const uid = require('../db/uid');

const router = express.Router();

// 确定被上传图片的保存路径
const dest = path.resolve( __dirname , '../public/images' );

// 表示将上传的文件内容先存储在内存中
const storage = multer.memoryStorage();

// 创建 multer 实例
const m = multer( { storage } );

// <input type="file" name="upfile">
const multerMiddleware = m.single( 'upfile' );

// 启用中间件处理 multipart/form-data 格式的数据
// 将 <input type="file" name="upfile"> 中对应文件解析后添加到 req.file 中
router.post( '/image/upload' , multerMiddleware );

// 使用自定义路由处理文件上传操作
router.post( '/image/upload' , (req,resp)=>{
    if( req.session.customer ) {
        console.log( req.file );
        // 获得由用户选择的文件名称(原始名称)
        let filename = req.file.originalname ;
        // 取原始文件名中的扩展名
        let extname = path.extname( filename ); 
        // 重新生成文件名
        filename = uid.idGenerator() + extname ;
        // 获得文件内容(以缓冲区形式返回)
        let buffer = req.file.buffer ;
        // 确定文件保存路径
        let filepath = path.resolve( dest , filename );
        // 将文件内容写出到指定文件中
        fs.writeFileSync( filepath , buffer );
        resp.json( { success: true , file_path: '/images/' + filename } );
        return ;
    }
    resp.json( { success: false , msg: '未登录不可上传哦' } );
});

module.exports = router ;